from fastapi import Query
from pydantic import Field, BaseModel, ConfigDict

import typing as t

from pydantic.alias_generators import to_camel
from typing_extensions import Optional

from server.module_chat.chat.core.agent.tool.tool import Tool


class Agent(BaseModel):
    """
    Agent class
    """
    model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True, from_attributes=True)

    id: str

    agent_name: str

    agent_desc: Optional[str] = Field(None)

    tools: t.List[Tool]
